package com.ruoyi.aspect;

import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

@Aspect
@Component
public class FileUploadAspect {
    // 切入点：拦截文件上传的控制器方法（根据实际路径调整）
    @Pointcut("execution(* com.ruoyi.controller.common.CommonController.uploadVideoTest(..)) && args(file)")
    public void uploadPointcut(MultipartFile file) {}

    // 后置通知：方法执行成功后触发回调
    @AfterReturning(pointcut = "uploadPointcut(file)", returning = "result", argNames = "result,file") // 方法返回值
    public void afterUpload(Object result, MultipartFile file) {
        // 获取上传的文件参数
        if (file != null && !file.isEmpty()) {
            // 执行回调逻辑
            System.out.println("【AOP 回调】文件上传完成：" + file.getOriginalFilename());
            // 获取保存后的文件路径（需根据控制器逻辑调整，或通过返回值获取）
            // 其他操作：如调用第三方API、写入数据库等
        }
    }
}
